#include "bullet.h"
#include<cmath>

Bullet::Bullet(QGraphicsItem *parent, const QPixmap &pixmap, const QPointF &startPos, const QPointF &direction)
    : QGraphicsPixmapItem(pixmap.isNull() ? QPixmap("C:\\Users\\25403\\Desktop\\fire.png") : pixmap, parent), // 使用默认图片如果pixmap为空
      direction(direction),
      isMoving(false) {
    if (!pixmap.isNull()) {
        setPos(startPos); // 如果提供了pixmap且不为空，则设置起始位置
    } else {
        // pixmap为空，你可能需要在这里设置一个默认的起始位置，或者什么都不做
        // 例如：setPos(someDefaultPosition);
    }
}
void Bullet::startMoving(int interval) {
    if (interval > 0 && !isMoving) {
        isMoving = true;
        moveTimer.start(interval); // 启动定时器
    }
}



void Bullet::stopMoving() {
    if (isMoving) {
        isMoving = false;
        moveTimer.stop(); // 停止定时器
    }
}

void Bullet::timerEvent(QTimerEvent *event) {
    if (event->timerId() == moveTimer.timerId()) {
        // 更新子弹的位置
        QPointF newPos = pos() + direction * 10; // 假设每次移动10个单位（根据需求调整）
        setPos(newPos);
        qDebug()<<"子弹";
        // 检查是否超出边界（如果需要）
        // ...
    }
}
void Bullet::setDirection(const QPointF &newDirection) {
    qreal length = std::sqrt(newDirection.x() * newDirection.x() + newDirection.y() * newDirection.y());
    if (length > 0.0) {
        direction = QPointF(newDirection.x() / length, newDirection.y() / length);
    } else {
        // 如果长度为0，您可以设置一个默认的方向或抛出异常
        direction = QPointF(1.0, 0.0); // 默认向右
    }
}
